/*
 *    Copyright (c) 2018-2025, cloud All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the pig4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: cloud
 */

import { services } from '@/config'

function filterType(val) {
  const k = 1024
  const sizes = ['B', 'KB', 'MB', 'GB', 'PB', 'TB', 'EB', 'ZB', 'YB']
  const i = Math.floor(Math.log(val) / Math.log(k))
  return `${(val / Math.pow(k, i)).toPrecision(3)}${sizes[i]}`
}

export const tableOption = {
  border: true,
  index: true,
  indexLabel: '序号',
  stripe: true,
  menuAlign: 'center',
  align: 'center',
  viewBtn: true,
  searchMenuSpan: 12,
  editBtn: false,
  saveBtn: false,
  addBtn: true,
  menuBtn: false,
  menuWidth: 250,
  cancelBtnText: '关闭',
  column: [
    {
      label: '编号',
      prop: 'id',
      hide: true,
      addDisplay: false
    },
    {
      hide: true,
      label: '附件上传',
      prop: 'imgUrl',
      type: 'upload',
      loadText: '附件上传中，请稍等',
      span: 24,
      propsHttp: {
        res: 'data',
        url: 'url',
        name: 'fileName'
      },
      tip: '上传同步至文件服务器',
      action: `${services.adminService}sys-file/upload`,
      limit: 10,
      multiple: true,
      fileSize: 10240000
    },
    {
      label: '空间',
      prop: 'bucketName',
      overHidden: true,
      hide: true,
      addDisplay: false
    },
    {
      label: '文件名',
      prop: 'fileName',
      overHidden: true,
      hide: true,
      searchSpan: 12,
      addDisplay: false
    },
    {
      label: '原文件名',
      prop: 'original',
      overHidden: true,
      search: true,
      addDisplay: false
    },
    {
      label: '文件类型',
      prop: 'type',
      addDisplay: false,
      width: 80
    },
    {
      label: '文件大小',
      prop: 'fileSize',
      addDisplay: false,
      formslot: true,
      width: 100,
      formatter: (row, value, label, column) => {
        return filterType(value)
      }
    },
    {
      label: '上传人',
      prop: 'createBy',
      addDisplay: false,
      width: 90
    },
    {
      width: 90,
      label: '上传时间',
      prop: 'createTime',
      type: 'datetime',
      format: 'yyyy-MM-dd',
      valueFormat: 'yyyy-MM-dd HH:mm:ss',
      editDisabled: true,
      addDisplay: false,
      span: 24
    }
  ]
}
